<?php
App::uses('AppModel', 'Model');
/**
 * Produto Model
 *
 * @property Empresa $Empresa
 * @property TiposProduto $TiposProduto
 * @property Review $Review
 */
class Produto extends AppModel {

	public $displayField = 'descricao';
	public $familia = array();
	
	public $validate = array(
		'empresa_id' => array(
			'numeric' => array(
				'rule' => array('numeric'),
				//'message' => 'Your custom message here',
				//'allowEmpty' => false,
				//'required' => false,
				//'last' => false, // Stop validation after this rule
				//'on' => 'create', // Limit validation to 'create' or 'update' operations
			),
		),
		'tipos_produto_id' => array(
			'numeric' => array(
				'rule' => array('numeric'),
				//'message' => 'Your custom message here',
				//'allowEmpty' => false,
				//'required' => false,
				//'last' => false, // Stop validation after this rule
				//'on' => 'create', // Limit validation to 'create' or 'update' operations
			),
		),
		'numero_votos' => array(
			'numeric' => array(
				'rule' => array('numeric'),
				//'message' => 'Your custom message here',
				//'allowEmpty' => false,
				//'required' => false,
				//'last' => false, // Stop validation after this rule
				//'on' => 'create', // Limit validation to 'create' or 'update' operations
			),
		),
		'media_votos' => array(
			'decimal' => array(
				'rule' => array('decimal'),
				//'message' => 'Your custom message here',
				'allowEmpty' => false,
				//'required' => false,
				//'last' => false, // Stop validation after this rule
				//'on' => 'create', // Limit validation to 'create' or 'update' operations
			),
		),
		'descricao' =>array(
			'notempty' => array(
				'rule' => array('notempty')
			)
		)
	);

	//The Associations below have been created with all possible keys, those that are not needed can be removed

/**
 * belongsTo associations
 *
 * @var array
 */
	public $belongsTo = array(
		'Empresa' => array(
			'className' => 'Empresa',
			'foreignKey' => 'empresa_id',
			'conditions' => '',
			'fields' => '',
			'order' => ''
		),
		'TiposProduto' => array(
			'className' => 'TiposProduto',
			'foreignKey' => 'tipos_produto_id',
			'conditions' => '',
			'fields' => '',
			'order' => ''
		)
	);

/**
 * hasMany associations
 *
 * @var array
 */
	public $hasMany = array(
		'Review' => array(
			'className' => 'Review',
			'foreignKey' => 'produto_id',
			'dependent' => false,
			'conditions' => '',
			'fields' => '',
			'order' => '',
			'limit' => '',
			'offset' => '',
			'exclusive' => '',
			'finderQuery' => '',
			'counterQuery' => ''
		)
	);
	
	function melhoresNotas($tipo, $array = array(), $limite = 5){
		$array['order'] = 'Produto.media_votos DESC';
		$array['limit'] = $limite;
		if($tipo === "teste") $array['recursive'] = -1;
		return $this->find("all", $array);
	}
	
	function melhoresNotasPorEmpresa($tipo, $empresa, $limite = 5){
		$array['conditions'] = array('empresa_id'=>$empresa);
		return $this->melhoresNotas($tipo, $array, $limite);
	}
	
	function breadCrumb($id, $array = array()){
		$this->recursive = -1;
		$categoria = $this->TiposProduto->findById($id);
		if($categoria['TiposProduto']['categoria_pai'] != $id){
			$this->breadCrumb($categoria['TiposProduto']['categoria_pai']);			
		}
		else return $this->familia[] = $categoria['TiposProduto'];
		$this->familia[] = $categoria['TiposProduto'];
	}

}
